#include<windows.h>
#include<math.h>

int IsPolygon(POINT *p)
{
	if(!p)
		return -1;
	int i,j,k,l;
	for(i=0;p[i].x!=-1 && p[i].y!=-1;i++)
	//{}
	if(i<=2)												//minim 3 puncte pentru a defini un poligon
		return 0;
	for(j=0;j<i-1;j++)
		for(k=j+1;k<i;k++)
			for(l=k+1;l<i+1;l++)
				if((p[j].x==p[k].x && p[k].x==p[l].x) ||	//punctele care definesc poligonul nu trebuie sa fie colineare
					(p[j].y==p[k].y && p[k].y==p[l].y))
					return 0;
	return 1;
}

int IsSimple(POINT *p)
{
	if(!p || !(IsPolygon(p)))
		return -1;
	POINT p1,p2,p3,p4;
	p1=p[0]; p2=p3=p[1]; p4=p[2];
	int s;
	for(s=0;p[s].x!=-1 && p[s].y!=-1;s++)
	{}
	int i,j,k,l;
	for(i=0,j=i+1;i<s-2,j<s-1;i++,j++)
		for(k=j,l=k+1;k<s-1,l<s;k++,l++)
		{
			for(int x1=min(p[i].x,p[j].x)+1;x1<max(p[i].x,p[j].x);x1++)
				for(int x2=min(p[k].x,p[l].x)+1;x2<max(p[k].x,p[l].x);x2++)
					if(x1==x2) 
					{
						for(int y1=min(p[i].y,p[j].y)+1;y1<max(p[i].y,p[j].y);y1++)
							for(int y2=min(p[k].y,p[l].y)+1;y2<max(p[k].y,p[l].y);y2++)
								if(y1==y2) 
									return 0;
					}
		}
	return 1;
}